AWS IoT Greengrass Coreがaptコマンドからインストール可能になりました
大阪オフィスの小倉です。
最近AWS IoT Greengrassを始めました。
そのGreengrassですが、本日アップデートがあり、Greengrass Coreをaptコマンドからインストール・アップグレード可能になったとのことなので試してみました。
AWS IoT Greengrass now supports Advanced Package Tool (APT) package management
説明を見ると、
On supported Debian-based Linux distributions....
とのことなので、デバイスに見立てるEC2インスタンスはUbuntuを使用し、 GreengrassチュートリアルのHello World Lambda関数の実行までやってみます。
1. AWS IoT Greengrassの設定
マネジメントコンソールから、ドキュメントの説明に従い、
Greengrassグループの作成と、セキュリティリソースのダウンロードを行います。
このページの最後にある、インストールパッケージのダウンロードとインストールは今回apt
コマンドで行うので実行しません。
2. デバイスへのGreengrass Coreの設定
EC2インスタンスの作成
デバイスに見立てるEC2インスタンスは以下で作成しました。
インスタンスID:ami-07f4cb4629342979c(Ubuntu Server 18.04 LTS x86) インスタンスタイプ:t2.micro
セキュリティグループの設定で、22番と8883番のポートを開けておきます。
Greengrass Coreのインストール
こちらのドキュメントの説明に従い作業します。
今回参照するのは、Install the AWS IoT Greengrass Core Software from an APT Repository
の項になります。
ユーザ、グループの作成
sudo adduser --system ggc_user sudo addgroup --system ggc_group
証明書、設定ファイルのセットアップ
事前にダウンロードしたファイルをEC2に転送後、以下の要領で/greengrass
ディレクトリに展開します。
sudo mkdir -p /greengrass sudo tar -xzvf *your-hash*-setup.tar.gz -C /greengrass
また、ルートCA証明書もダウンロードしておきます。
cd /greengrass/certs/ sudo wget -O root.ca.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
aptコマンドからのインストール
ようやく本番です。
最初にkeyringパッケージをインストールします。
wget -O aws-iot-greengrass-keyring.deb https://d1onfpft10uf5o.cloudfront.net/greengrass-apt/downloads/aws-iot-greengrass-keyring.deb sudo dpkg -i aws-iot-greengrass-keyring.deb echo "deb https://dnw9lb6lzp2d8.cloudfront.net stable main" | sudo tee /etc/apt/sources.list.d/greengrass.list
パッケージリストのアップデート
sudo apt update
aptコマンドからGreengrass Coreパッケージをインストールします
sudo apt install aws-iot-greengrass-core
これでGreengrass Coreがインストールできたはずです。以下のコマンドで起動&ステータス表示してみます。
systemctl start greengrass.service systemctl status greengrass.service ● greengrass.service - Greengrass Daemon Loaded: loaded (/lib/systemd/system/greengrass.service; disabled; vendor preset: enabled) Active: active (running) since Thu 2020-02-27 00:15:38 UTC; 9s ago Process: 14035 ExecStart=/greengrass/ggc/core/greengrassd start (code=exited, status=0/SUCCESS) Main PID: 14049 (5) Tasks: 7 (limit: 1152) CGroup: /system.slice/greengrass.service └─14049 /greengrass/ggc/packages/1.10.0/bin/daemon -core-dir /greengrass/ggc/packages/1.10.0 -greengrassdPi Feb 27 00:15:36 ip-172-31-38-74 systemd[1]: Starting Greengrass Daemon... Feb 27 00:15:37 ip-172-31-38-74 greengrassd[14035]: Waiting Feb 27 00:15:37 ip-172-31-38-74 greengrassd[14035]: Stopped greengrass daemon, exiting with success Feb 27 00:15:37 ip-172-31-38-74 greengrassd[14035]: Setting up greengrass daemon Feb 27 00:15:37 ip-172-31-38-74 greengrassd[14035]: Validating hardlink/softlink protection Feb 27 00:15:37 ip-172-31-38-74 greengrassd[14035]: Waiting for up to 1m10s for Daemon to start Feb 27 00:15:38 ip-172-31-38-74 greengrassd[14035]: Greengrass successfully started with PID: 14049 Feb 27 00:15:38 ip-172-31-38-74 systemd[1]: Started Greengrass Daemon.
ちゃんと動いてそうですね!
動作確認もしてみましょう。
ドキュメントにあるチュートリアル用Lambda関数をデプロイしてみます。
※デプロイ実行前に、EC2にJavaランタイムとPythonをインストールしておいてください。
sudo apt install openjdk-8-jdk sudo apt install python3.7-minimal
デプロイ後にhello/world
トピックをサブスクライブすると、デバイスから送られたメッセージが表示されますね。
まとめ
公式ドキュメントのチュートリアルを元に、aptコマンドからのインストールを試してみました。
地味なアップデートではありますが、Greengrassの導入、アップデートにおける選択肢が増えるのはありがたいですね。
この記事がどなたかのお役に立てば幸いです。
以上、大阪オフィスの小倉でした。